<?php

$GLOBALS['ruta'] = "C:/Users/juanmcc/Documents/www/log_pef.txt";

/**
 * esta funcion hace un print_r tabulado ideal para debuguear arrays u objetos
 * @param object o array $datos
 * @param mixed int o boolean true $exit. Si existe hara un exit;
 */
function debug($datos, $exit = NULL)
{
	echo '<pre>';
	print_r($datos);
	echo '</pre>';
	if($exit){
		$str = __METHOD__ . "|" .__FILE__ . "| ";
		echo $str."<br>";
		exit;
	}
		
		
	
}
/**
 * mete un string en el archivo configurado en la variable global $ruta
 * @param String $datos
 */
function debugStrToFile($datos)
{
	$ruta = $GLOBALS['ruta'];
	$fp='';
	if(file_exists($ruta))
	{
		$fp = fopen($ruta,"a");
		fputs($fp, "\n");
	}
	else
	{
		$fp = fopen($ruta, "w+");
	}
	fputs($fp, "\r\n ".date("Y-m-d H:i:s")." STR: ");
	fputs($fp, $datos);

	fclose($fp);
}
/**
 * Mete el contenido de un array en el fichero configurado con la variable global $ruta. 
 * Ideal para debuguea $_POST, $_GET,$_SESSION, etc.
 * @param array $datos
 */
function debugArrayToFile1($datos)
{
	$ruta = $GLOBALS['ruta'];
	$fp='';
	if(file_exists($ruta))	{
		
		$fp = fopen($ruta,"a");
		fputs($fp, "\n");
	}else	{
		
		$fp = fopen($ruta, "w+");
	}
	fputs($fp, "\r\n -----------------------------");
	fputs($fp, "\r\n ".date("Y-m-d H:i:s")." Array: ");
	
	foreach($datos as $k => $valor)
	{

		fputs($fp, "\r\n [".$k . '] = '.$valor);
	}
	fputs($fp, "\r\n -----------------------------");
	fclose($fp);
}
function debugArrayToFile($datos)
{
	$ruta = $GLOBALS['ruta'];
	$fp='';
	if(file_exists($ruta))	{

		$fp = fopen($ruta,"a");
		fputs($fp, "\n");
	}else	{

		$fp = fopen($ruta, "w+");
	}
	fputs($fp, "\r\n -----------------------------");
	fputs($fp, "\r\n ".date("Y-m-d H:i:s")." Array: ");

	

	fputs($fp, arrayRecursiva($datos));
	
	fputs($fp, "\r\n -----------------------------");
	fclose($fp);
}

function arrayRecursiva($datos,$str=null){
	
	
	if(!is_array($datos)){
		return $str;
	}
	
	foreach($datos as $k => $valor)
	{
		if(is_array($valor)){
			//$str .= "\r\n [".$k . "]";
			debugStrToFile($str);
			$str.= arrayRecursiva($valor,$str);
		}
		else{
			
			$str.= "\r\n [".$k . '] = '.$valor;
		}
	}
	return $str;
}
/**
 * Esta funcion retorna un sql en formato string con sus parametros y datos en el propio string.
 * Ideal para debuguear consultas con bindParams
 * @param String $sql 
 * @param array $params parametros tipo pdo como ? y :valorCampo
 * @return String Contulta interpolada
 */
function interpolateQuery($sql, $params) {
	$keys = array();


	foreach ($params as $key => $value) {
		if (is_string($key)) {
			$keys[] = '/'.$key.'/';
		} else {
			$keys[] = '/[?]/';
		}
	}

	$sql = preg_replace($keys, $params, $sql, 1, $count);


	return "my query: ".$sql;
}